# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

a = Analysis(
    ['main-ui.py'],  # 主入口文件
    pathex=[],  # 搜索路径
    binaries=[],
    datas=[('52936.ico', '.')],   # 数据文件
    hiddenimports=[],  # 隐藏导入
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[  # 排除不需要的模块以减少体积
        'matplotlib', 'scipy', 'numpy', 'pandas', 'tensorflow', 
        'keras', 'sklearn', 'django', 'flask', 'sqlalchemy',
        'PySide2', 'PyQt5', 'pyodbc', 'cryptography',
        'babel', 'notebook', 'jupyter', 'ipython', 'prompt_toolkit',
        'tornado', 'zmq', 'pkg_resources', 'setuptools',
        'multiprocessing.Pool',  # 不使用多进程池
        'concurrent.futures.process',  # 不使用进程执行器
        'PIL._tkinter_finder'  # 排除不必要的PIL组件
    ],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

# 添加tkinter的隐藏导入
a.datas += [('tkinter', 'path/to/tkinter', 'DATA')]

# 创建可执行文件
exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    name='main-ui',  # 输出文件名
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,  # 使用UPX压缩
    console=False,  # 不显示控制台窗口
    icon='52936.ico',  # 图标文件
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

# 收集依赖项
coll = COLLECT(
    exe,
    a.binaries,
    a.zipfiles,
    a.datas,
    strip=False,
    upx=True,  # 使用UPX压缩
    upx_exclude=[],
    name='main-ui',  # 输出目录名
)